package com.ruoyi.develop.finance.financeGoodsRunAccount.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 库存商品流水账对象 finance_goods_run_account
 *
 * @author lmm
 * @date 2025-08-14
 */
public class FinanceGoodsRunAccount extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private String id;

    /**
     * 流水号
     */
    @Excel(name = "流水号")
    private Long nos;

    /**
     * 商品id
     */
    @Excel(name = "商品id")
    private String goodsId;

    /**
     * 进项税率
     */
    @Excel(name = "进项税率")
    private BigDecimal inputTaxRate;

    /**
     * 销项税率
     */
    @Excel(name = "销项税率")
    private BigDecimal outputTaxRate;

    /**
     * 客户id
     */
    @Excel(name = "客户id")
    private String customerId;

    /**
     * 供应商id
     */
    @Excel(name = "供应商id")
    private String supplierId;

    /**
     * 类别
     */
    @Excel(name = "类别")
    private String type;

    /**
     * 发生日期
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发生日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date occurDate;

    /**
     * 会计期间
     */
    @Excel(name = "会计期间")
    private String accountPeriod;

    /**
     * 出入库编号
     */
    @Excel(name = "出入库编号")
    private Long storeNos;

    /**
     * 上期结存单价
     */
    @Excel(name = "上期结存单价")
    private BigDecimal previousUnitPrice;

    /**
     * 上期结存数量
     */
    @Excel(name = "上期结存数量")
    private BigDecimal previousCount;

    /**
     * 上期结存金额
     */
    @Excel(name = "上期结存金额")
    private BigDecimal previousAmount;

    /**
     * 本期增加单价
     */
    @Excel(name = "本期增加单价")
    private BigDecimal currentAddUnitPrice;

    /**
     * 本期增加数量
     */
    @Excel(name = "本期增加数量")
    private BigDecimal currentAddCount;

    /**
     * 本期增加金额
     */
    @Excel(name = "本期增加金额")
    private BigDecimal currentAddAmount;

    /**
     * 本期减少单价
     */
    @Excel(name = "本期减少单价")
    private BigDecimal currentReduceUnitPrice;

    /**
     * 本期减少数量
     */
    @Excel(name = "本期减少数量")
    private BigDecimal currentReduceCount;

    /**
     * 本期减少金额
     */
    @Excel(name = "本期减少金额")
    private BigDecimal currentReduceAmount;

    /**
     * 本期成本金额
     */
    @Excel(name = "本期成本金额")
    private BigDecimal currentCostAmount;

    /**
     * 毛利
     */
    @Excel(name = "毛利")
    private BigDecimal grossMargin;

    /**
     * 期末结存单价
     */
    @Excel(name = "期末结存单价")
    private BigDecimal endUnitPrice;

    /**
     * 期末结存数量
     */
    @Excel(name = "期末结存数量")
    private BigDecimal endCount;

    /**
     * 期末结存金额
     */
    @Excel(name = "期末结存金额")
    private BigDecimal endAmount;

    /**
     * 删除标志
     */
    private String delFlag;

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setNos(Long nos) {
        this.nos = nos;
    }

    public Long getNos() {
        return nos;
    }

    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }

    public String getGoodsId() {
        return goodsId;
    }

    public void setInputTaxRate(BigDecimal inputTaxRate) {
        this.inputTaxRate = inputTaxRate;
    }

    public BigDecimal getInputTaxRate() {
        return inputTaxRate;
    }

    public void setOutputTaxRate(BigDecimal outputTaxRate) {
        this.outputTaxRate = outputTaxRate;
    }

    public BigDecimal getOutputTaxRate() {
        return outputTaxRate;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setSupplierId(String supplierId) {
        this.supplierId = supplierId;
    }

    public String getSupplierId() {
        return supplierId;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setOccurDate(Date occurDate) {
        this.occurDate = occurDate;
    }

    public Date getOccurDate() {
        return occurDate;
    }

    public void setAccountPeriod(String accountPeriod) {
        this.accountPeriod = accountPeriod;
    }

    public String getAccountPeriod() {
        return accountPeriod;
    }

    public void setStoreNos(Long storeNos) {
        this.storeNos = storeNos;
    }

    public Long getStoreNos() {
        return storeNos;
    }

    public void setPreviousUnitPrice(BigDecimal previousUnitPrice) {
        this.previousUnitPrice = previousUnitPrice;
    }

    public BigDecimal getPreviousUnitPrice() {
        return previousUnitPrice;
    }

    public void setCurrentAddUnitPrice(BigDecimal currentAddUnitPrice) {
        this.currentAddUnitPrice = currentAddUnitPrice;
    }

    public BigDecimal getCurrentAddUnitPrice() {
        return currentAddUnitPrice;
    }

    public void setCurrentReduceUnitPrice(BigDecimal currentReduceUnitPrice) {
        this.currentReduceUnitPrice = currentReduceUnitPrice;
    }

    public BigDecimal getCurrentReduceUnitPrice() {
        return currentReduceUnitPrice;
    }

    public void setEndUnitPrice(BigDecimal endUnitPrice) {
        this.endUnitPrice = endUnitPrice;
    }

    public BigDecimal getEndUnitPrice() {
        return endUnitPrice;
    }

    public BigDecimal getPreviousCount() {
        return previousCount;
    }

    public void setPreviousCount(BigDecimal previousCount) {
        this.previousCount = previousCount;
    }

    public BigDecimal getPreviousAmount() {
        return previousAmount;
    }

    public void setPreviousAmount(BigDecimal previousAmount) {
        this.previousAmount = previousAmount;
    }

    public BigDecimal getCurrentAddCount() {
        return currentAddCount;
    }

    public void setCurrentAddCount(BigDecimal currentAddCount) {
        this.currentAddCount = currentAddCount;
    }

    public BigDecimal getCurrentAddAmount() {
        return currentAddAmount;
    }

    public void setCurrentAddAmount(BigDecimal currentAddAmount) {
        this.currentAddAmount = currentAddAmount;
    }

    public BigDecimal getCurrentReduceCount() {
        return currentReduceCount;
    }

    public void setCurrentReduceCount(BigDecimal currentReduceCount) {
        this.currentReduceCount = currentReduceCount;
    }

    public BigDecimal getCurrentReduceAmount() {
        return currentReduceAmount;
    }

    public void setCurrentReduceAmount(BigDecimal currentReduceAmount) {
        this.currentReduceAmount = currentReduceAmount;
    }

    public BigDecimal getCurrentCostAmount() {
        return currentCostAmount;
    }

    public void setCurrentCostAmount(BigDecimal currentCostAmount) {
        this.currentCostAmount = currentCostAmount;
    }

    public BigDecimal getGrossMargin() {
        return grossMargin;
    }

    public void setGrossMargin(BigDecimal grossMargin) {
        this.grossMargin = grossMargin;
    }

    public BigDecimal getEndCount() {
        return endCount;
    }

    public void setEndCount(BigDecimal endCount) {
        this.endCount = endCount;
    }

    public BigDecimal getEndAmount() {
        return endAmount;
    }

    public void setEndAmount(BigDecimal endAmount) {
        this.endAmount = endAmount;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("nos", getNos())
                .append("goodsId", getGoodsId())
                .append("inputTaxRate", getInputTaxRate())
                .append("outputTaxRate", getOutputTaxRate())
                .append("customerId", getCustomerId())
                .append("supplierId", getSupplierId())
                .append("type", getType())
                .append("occurDate", getOccurDate())
                .append("accountPeriod", getAccountPeriod())
                .append("storeNos", getStoreNos())
                .append("previousUnitPrice", getPreviousUnitPrice())
                .append("previousCount", getPreviousCount())
                .append("previousAmount", getPreviousAmount())
                .append("currentAddUnitPrice", getCurrentAddUnitPrice())
                .append("currentAddCount", getCurrentAddCount())
                .append("currentAddAmount", getCurrentAddAmount())
                .append("currentReduceUnitPrice", getCurrentReduceUnitPrice())
                .append("currentReduceCount", getCurrentReduceCount())
                .append("currentReduceAmount", getCurrentReduceAmount())
                .append("currentCostAmount", getCurrentCostAmount())
                .append("grossMargin", getGrossMargin())
                .append("endUnitPrice", getEndUnitPrice())
                .append("endCount", getEndCount())
                .append("endAmount", getEndAmount())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("delFlag", getDelFlag())
                .toString();
    }
}
